草庐IT

c++ - 异常行为 C++14 与 C++98

全部标签

ruby - 如何修复 activesupport 3.0.0 与 2.x 相比的行为差异?

我在我的Sinatra应用程序中使用Hash#to_xml。在我转向actviesupport3.0.0之前,它一直有效activesupport在3.0.0的使用有区别吗?例如这很好用gem'activesupport','2.3.5'require'active_support'{}.to_xml和gem'activesupport','3.0.0'require'active_support'{}.to_xml生成:NoMethodError:{}的未定义方法“to_xml”:哈希 最佳答案 当您需要时,ActiveSuppo

Ruby 捕获 NoMethodError 并从发生异常的地方继续执行

在Ruby中,我想在另一个对象中捕获在一个对象上生成的NoMethodError,然后将一些值返回到引发异常的位置并继续执行。有没有现成的方法可以做到这一点?我想到的最好的是:classExceptionattr_accessor:continuationendclassOuterdefhelloputs"hello"endclassInnerdefworldputs"world"enddefmethod_missing(method,*args,&block)x=callccdo|cc|e=RuntimeError.exception(method)e.continuation=cc

ruby-on-rails - 了解 `include` mixin 模块的 "subsequent"语句行为

我试图理解include语句在多个Mixin中使用时的行为。也就是说,我有这些声明:classArticleDoubleIncludedModule将被包含在Article类中多少次?也就是说,由于DoubleIncludedModule的“后续”包含(首先在Article类中,然后在Article包含的AModule中类本身),将是Ruby自动处理的“双重包含”问题,还是DoubleIncludedModule(错误地)包含两次?当然,我想包含DoubleIncludedModule模块仅一次。我怎样才能以正确的方式做到这一点(也许通过使用一些RubyonRails方法)?

ruby - 使用空数组意外行为初始化哈希

这个问题在这里已经有了答案:Strange,unexpectedbehavior(disappearing/changingvalues)whenusingHashdefaultvalue,e.g.Hash.new([])(4个答案)关闭3年前。我想用一个空的Array初始化一个Hash并且对于每个新键将特定值推送到该数组。这是我尝试做的:a=Hash.new([])#=>{}a[1]["asd"]a#=>{}a的预期输出是{1=>["asd"]}但这并没有发生。我在这里缺少什么?ruby版本:ruby2.0.0p598(2014-11-13revision48408)[x86_64-

ruby-on-rails - 如何在 heroku worker 中捕获内存配额异常

我正在使用delayed_job来处理heroku的后台作业。有时我会超出我的内存分配,我会得到这样的东西:2011-11-16T02:41:25+00:00heroku[worker.1]:错误R14(超出内存配额)2011-11-16T02:41:45+00:00heroku[worker.1]:进程运行mem=542M(106.0%)我想优雅地处理这个。有没有办法知道我什么时候会超出我的内存限制?类似于rack-timeout会很棒谢谢! 最佳答案 我想我找到了一个很好的解决方案,从Oink中窃取了一些代码。gem。特别是这个

ruby - 引发异常 : use instance or class?

我见过使用类引发异常的Ruby代码:raiseGoatException,"Maximumof3goatsperbumpercar."其他代码使用实例:raiseGoatException.new"Noleotardfoundsuitableforgoat."这两个都是以同样的方式获救的。是否有理由使用实例而不是类? 最佳答案 没有区别;在任何一种情况下都会实例化异常类。如果您提供一个字符串,作为new的参数或作为raise的第二个参数,它会被传递给initialize并且将成为异常实例的.message。例如:classGoatE

ruby - 如何序列化异常

根据ruby-doc和apidock,您可以使用to_json和json_create序列化和反序列化异常。但是在浪费了一些时间尝试使用它们之后,我仍然没有找到办法。调用exc.to_json给我一个空哈希,Exception.json_create(hash)给我这个错误:undefinedmethod'json_create'forException:类我想我可以很容易地重新创建这些函数,因为源代码可用,但我更愿意了解我做错了什么……有什么想法吗? 最佳答案 默认情况下,JSON模块不会扩展Exception。您必须要求“jso

ruby-on-rails - ubuntu 14.04 上 passenger-install-nginx-module 的 Bundler 错误

我正在ubuntu14.04和ruby2.2.4上安装passenger+nginx。passenger-install-nginx-module有bundler错误$passenger-install-nginx-module/home/ubuntu/.rvm/gems/ruby-2.2.4/gems/bundler-1.13.1/lib/bundler/rubygems_ext.rb:45:in`full_gem_path':uninitializedconstantBundler::Plugin::API::Source(NameError)from/home/ubuntu/.r

ruby - 为什么 array.each 行为取决于 Array.new 语法?

我正在使用Ruby1.9.2-p290并发现:a=Array.new(2,[]).each{|i|i.push("a")}=>[["a","a"],["a","a"]]这不是我所期望的。但以下构造函数样式确实符合我的预期:b=Array.new(2){Array.new}.each{|i|i.push("b")}=>[["b"],["b"]]第一个例子是预期的行为吗?在ruby​​-doc中,我的size=2参数对于两个构造函数来说似乎是同一种参数。我认为,如果each方法通过了该参数,那么它将以相同的方式为两个构造函数使用它。 最佳答案

ruby - 如何检查我的主题是否引发异常?

我目前正在subject中创建一个对象,需要测试这是否会引发异常。以下代码说明了我要实现的目标:describeMyClassdodescribe'#initialize'dosubject{MyClass.new}it{is_expected.not_toraise_error(Some::Error)}endend我有一种感觉,我正在以错误的方式处理这件事。将subject设置为新对象而不创建对象两次的首选方法是什么?更新我的问题有两个。首先,这种语法不起作用:it{is_expected.not_toraise_error}但是,在itblock中使用expect确实如此(正如J